﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _1.Presentacion.Utilidades;
using _2.Logica.Inventario;
using _4.Modelado.Inventario;
using _1.Presentacion.Principal;

namespace _1.Presentacion.Modulo_Inventario
{
    public partial class Gestionar_Familia : Päntalla_Base
    {
        private int codFamilia;
        private int codLineaArticulo;

        public Gestionar_Familia()
        {
            InitializeComponent();
        }

        private void CargaGridFamiliaArticulos()
        {
            try
            {
                var logica = new FamiliaArticuloL();

                List<FamiliaArticulo> listaFamiliaArticulo = logica.FamiliaArticulosConsultar();
                //Recorre la lista de Usuarios para asignar a cada celda del Datagrid
                //Los valores devueltos por la consulta
                dgvFamilia.Rows.Clear();
                for (int i = 0; i < listaFamiliaArticulo.Count; i++)
                {
                    dgvFamilia.Rows.Add();
                    dgvFamilia.Rows[i].Cells[0].Value = listaFamiliaArticulo[i].iPK_Familia_Articulo;
                    dgvFamilia.Rows[i].Cells[1].Value = listaFamiliaArticulo[i].sFamiDescripcion;

                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar información " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        
        }

        private void CargaGridLineaArticulos(int xiFK_Familia_Linea)
        {
            try
            {
                var logica = new LineaArticuloL();

                List<LineaArticulo> listaLineaArticulo = logica.LineaArticulosConsultar(new LineaArticulo { iFK_Familia_Linea = xiFK_Familia_Linea });
                dgvLineaArticulo.Rows.Clear();
                for (int i = 0; i < listaLineaArticulo.Count; i++)
                {
                    dgvLineaArticulo.Rows.Add();
                    dgvLineaArticulo.Rows[i].Cells[0].Value = listaLineaArticulo[i].iPK_Linea_Articulo;
                    dgvLineaArticulo.Rows[i].Cells[1].Value = listaLineaArticulo[i].sLineaDescripcion;

                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar información " + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }
        
   

        private void Gestionar_Familia_Load(object sender, EventArgs e)
        {
            Validaciones.CargarUsuarioLogueado(lbl_Usuario, lbl_Fecha);
            CargaGridFamiliaArticulos();
            txt_PKFamilia.Text = "0";
            txt_PKLinea.Text = "0";
            gbLineaIgnore.Enabled = false;
            
        }

    
        private void btnHome_Click_1(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

    
        #region Linea
        private void btnNuevoLinea_Click_1(object sender, EventArgs e)
        {
            txtLineaDescripcion.Clear();
            codLineaArticulo = 0;
            txt_PKLinea.Text = "0";
        }

        private void dgvLineaArticulo_DoubleClick(object sender, EventArgs e)
        {
            int indicefila = dgvLineaArticulo.SelectedCells[0].RowIndex;
            codLineaArticulo = Convert.ToInt32(dgvLineaArticulo.Rows[indicefila].Cells[0].Value.ToString());
            txtLineaDescripcion.Text = dgvLineaArticulo.Rows[indicefila].Cells[1].Value.ToString();
            txt_PKLinea.Text = codLineaArticulo.ToString();
        }
        
        private void btnModificarLinea_Click(object sender, EventArgs e)
        {
            try
            {
                var obj = new LineaArticulo();

                obj.iFK_Familia_Linea = codFamilia;
                obj.iPK_Linea_Articulo = codLineaArticulo;
                obj.sLineaDescripcion = txtLineaDescripcion.Text.Trim();

                var logica = new LineaArticuloL();

                logica.LineaArticuloGuardar(obj);

                CargaGridLineaArticulos(codFamilia);
                MessageBox.Show("El registro ha sido guardado", "Transacción", MessageBoxButtons.OK);
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al guardar los datos" + exc, "Error", MessageBoxButtons.OKCancel);
            }


        }

        private void btnEliminarLinea_Click_1(object sender, EventArgs e)
        {
            try
            {
                if (dgvFamilia.RowCount > 0)
                {
                    int indiceFila = dgvFamilia.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvFamilia[1, indiceFila].Value.ToString();



                    DialogResult r = MessageBox.Show("Desea eliminar la línea: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        #region Eliminar

                        var obj = new LineaArticulo();

                        obj.iFK_Familia_Linea = codFamilia;
                        obj.iPK_Linea_Articulo = codLineaArticulo;
                        obj.sLineaDescripcion = txtLineaDescripcion.Text.Trim();

                        var logica = new LineaArticuloL();

                        logica.LineaArticuloEliminar(obj);

                        CargaGridLineaArticulos(codFamilia);
                        MessageBox.Show("El registro ha sido eliminado", "Transacción", MessageBoxButtons.OK);
                        txt_PKLinea.Text = "0";

                        #endregion

                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al eliminar los datos" + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }

        private void txtLineaDescripcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnModificarLinea_Click(sender, e);

            }
        }

        #endregion


        #region Familia

        private void btnModificarFamilia_Click_1(object sender, EventArgs e)
        {
            try
            {
                var obj = new FamiliaArticulo();

                obj.iPK_Familia_Articulo = codFamilia;
                obj.sFamiDescripcion = txtFamDescripcion.Text.Trim();

                var logica = new FamiliaArticuloL();

                logica.FamiliaArticuloGuardar(obj);

                CargaGridFamiliaArticulos();
                MessageBox.Show("El registro ha sido guardado", "Transacción", MessageBoxButtons.OK);
                btnNuevaFamilia_Click_1(null, null);
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al guardar los datos" + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }
       
        private void btnEliminarFamilia_Click_1(object sender, EventArgs e)
        {
            try
            {
                if (dgvFamilia.RowCount > 0)
                {
                    int indiceFila = dgvFamilia.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvFamilia[1, indiceFila].Value.ToString();



                    DialogResult r = MessageBox.Show("Desea eliminar la familia: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                        #region Elimina

                        var obj = new FamiliaArticulo();

                        obj.iPK_Familia_Articulo = codFamilia;
                        obj.sFamiDescripcion = txtFamDescripcion.Text.Trim();

                        var logica = new FamiliaArticuloL();

                        logica.FamiliaArticuloEliminar(obj);

                        CargaGridFamiliaArticulos();
                        MessageBox.Show("El registro ha sido eliminado", "Transacción", MessageBoxButtons.OK);
                        btnNuevaFamilia_Click_1(null, null);

                        #endregion

                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show("Se produjo un error al eliminar los datos" + exc, "Error", MessageBoxButtons.OKCancel);
            }
        }

        private void btnNuevaFamilia_Click_1(object sender, EventArgs e)
        {
            txtFamDescripcion.Clear();
            txtLineaDescripcion.Clear();
            dgvLineaArticulo.Rows.Clear();
            codFamilia = 0;
            codLineaArticulo = 0;
            txt_PKFamilia.Text = codFamilia.ToString();
            txt_PKLinea.Text = codLineaArticulo.ToString();
        }

        private void dgvFamilia_DoubleClick(object sender, EventArgs e)
        {
            int indicefila = dgvFamilia.SelectedCells[0].RowIndex;
            codFamilia = Convert.ToInt32(dgvFamilia.Rows[indicefila].Cells[0].Value.ToString());
            txtFamDescripcion.Text = dgvFamilia.Rows[indicefila].Cells[1].Value.ToString();

            CargaGridLineaArticulos(codFamilia);
            gbLineaIgnore.Enabled = true;

            txt_PKFamilia.Text = codFamilia.ToString();
        }

        private void txtFamDescripcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnModificarFamilia_Click_1(sender, e);

            }

        }
        
        
        #endregion

     

       

      




    }
}
